package com.wlz.bitOperation;

/**
 *  位运算 -- 无符号右移( >>> )
 *
 *   （正数左补0负数左补1）
 * @author： wlz
 * @Date 2021/1/19 14:42
 * @description： TODO
 * @version: 1.0
 */
public class UnsignedShiftRight {

    public static void main(String[] args) {

        /**
         *  0000 0000 0000 0000 0000 0000 0000 0101 换算成二进制
         *
         *  000 0 0000 0000 0000 0000 0000 0000 0000    // (用0进行补位)
         */
        //  右移3位 结果是0
        System.out.println(5>>3);

        /**
         * 负数以其正值的补码形式表达
         *  0000 0000 0000 0000 0000 0000 0000 0101  5换算成2进制  (-5的原码)
         *
         *  1111 1111 1111 1111 1111 1111 1111 1010  -5 的反码
         *
         *  1111 1111 1111 1111 1111 1111 1111 1011  -5换算成二进制 （-5的补码）
         *
         *  111 1 1111 1111 1111 1111 1111 1111 1111   // (用1进行补位)
         *
         *  0000 0000 0000 0000 0000 0000 0000 0000 (取反)
         *
         *  0000 0000 0000 0000 0000 0000 0000 0001 (加1 等于 1 加负号 等于 -1 )
         *
         */
        // 右移3位 结果是-1
        System.out.println(-5>>3);

        /**
         *  负数以其正值的补码形式表达
         *  0000 0000 0000 0000 0000 0000 0000 0101  5换算成2进制
         *  1111 1111 1111 1111 1111 1111 1111 1011  -5换算成二进制
         *
         *  000 1 1111 1111 1111 1111 1111 1111 1111   // (用0进行补位)
         */
        // 无符号右移3位 结果是536870911
        System.out.println(-5>>>3);
    }
}
